<template>
  <div class="dashboard-container">
    <div class="app-container">
      <!-- UploadExcel提供了一个属性onSuccess ，他的值是一个函数，能接收到表格数据 -->
      <UploadExcel :on-success="successFn" />
    </div>
  </div>
</template>

<script>
// 导入
import { importBatch } from '@/api/employees'
export default {
  data() {
    return {

    }
  },
  methods: {
    /* Excel数据上传 */
    async successFn(data) {
      // data就是Excel表格的数据
      console.log(data)
      // 将后台数据转换成可以提交后台格式的数据
      // 1 . 将excel中问字段改成英文
      // result:改造后的数据
      const result = data.results.map(item => {
        // 使用zhToen方法
        return this.zhToen(item)
      })
      // 3 . 调用上传接口
      await importBatch(result)
      // 4 . 返回上一页
      this.$router.back()
    },
    // 中问 to 英文
    /** 思路:
     * 准备一个中英文对照表
     * 通过循环对象修改中文
     */
    zhToen(item) {
      // 2. 改造 中文 => 英文
      const obj = {} // 改造后的对象
      const user = {
        '入职日期': 'timeOfEntry',
        '姓名': 'username',
        '工号': 'workNumber',
        '手机号': 'mobile',
        '转正日期': 'correctionTime'
      }
      for (const key in item) {
        const objkey = user[key]
        // 🔔优化：格式化时间
        if (objkey === 'timeOfEntry' || objkey === 'correctionTime') {
          obj[objkey] = this.formatExcelDate(item[key])
        } else {
          obj[objkey] = item[key]
        }
      }
      return obj
    },
    /**
   * 格式化Excel表中存储的年月日日期
   * @param {number} num - excel存储的数字
   * @param {string} [format = '-'] - 年月日的间隔符，默认为'-'
   * @returns {string} 格式化后的日期
   */
    formatExcelDate(num, format = '-') {
      if (!/^\d+$/.test(num)) return
      num = parseInt(num)
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) { // 对大于60的日期进行减1处理
        millisecond = (num - 25568 - 1) * 3600 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 3600 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const m = date.getMonth() + 1
      const mm = m >= 10 ? m : '0' + m
      const d = date.getDate()
      const dd = d >= 10 ? d : '0' + d
      return yy + format + mm + format + dd // 返回格式化后的日期
    }

  }

}
</script>

<style>

</style>
